# -*- coding:utf-8 -*-

# @Time    : 2023/10/8 15:12
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : plan_explain.py
# @Software: LLM_internal

import sys
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import os
# sys.path.append('/Users/qichen/git-lingxi/LLM_internal/internal_server/')
current_script_path = os.path.abspath(__file__)
work_path = os.path.normpath(os.path.join(current_script_path, '../../../../'))
sys.path.append(work_path)

from bot.insurance_planner_gpt.agent.base_agent import LLMAgent


default_template = """
作为一个最专业规划师产品说明agent,你需要从用户问题或用户目标出发，严格按照保险产品的条款向用户讲解清楚，回答简洁明了。
需要注意以下情况：
1、你需要仔细阅读'产品条款'，一步一步思考，找出可以回答用户问题的条款内容，不要遗漏任何跟问题相关的条款；
2、如果没有找到跟用户问题相关的条款，则返回''；
3、含/不含表示可选保障，即可以扩展保障范围；
4、直接返回跟条款相关的内容就好，其他无关的话术不要返回。

用户问题：
===
{user_question}
===

保险条款：
===
{product_doc}
===

基于用户问题的相关条款总结：
"""


class PlanDescription(LLMAgent):

    def __init__(self, user_question, product_doc):
        self.prompt = default_template.format(user_question=user_question,
                                              product_doc=product_doc)
        print(self.prompt)
        super().__init__(self.prompt)


def get_terms(product_file):
    with open(product_file, 'r') as f:
        return f.read()


if __name__ == "__main__":
    # nohup python ./bot/insurance_planner_gpt/agent/make_local_data/question_answer_qc.py >> qc_小红花.log 2>&1 &
    import pandas as pd
    import asyncio
    results_list = []
    # user_questions = ['等待期']
    user_questions = ['医疗保险金', '理赔规则', '产品简介', '等待期', '免赔额', '投保规则', '投保年龄', '特药问题', '责任免除',
                      '费率优惠', '保费豁免', '保额问题', '续保问题', '保障期限', '特定疾病保险金', '罕见疾病保险金', '中症疾病保险金',
                      '轻症疾病保险金', '重大疾病保险金', '重大疾病医疗保险金', '身故/伤残保障', '疾病关爱保险金', '特定药品费用医疗保险金',
                      '住院津贴保险金', '在线问诊医疗保险金', '门急诊医疗保险金', '售后问题', '可选责任', '健康告知', '犹豫期', '保险类型',
                      '承保机构', '投保方式', '增值服务', '续保规则', '退保规则', '特定疾病有哪些', '重大疾病有哪些', '少儿门急诊指定疾病有哪些',
                      '中度疾病有哪些', '轻度疾病有哪些', '罕见疾病有哪些', '交通意外保障', '猝死责任', '财产保障', '宠物保障', '宽限期']
    product_names = ['小红花致夏版重大疾病保险/小红花致夏版重大疾病保险'
                     ]
    print(product_names)
    for user_question in user_questions:
        # 临时存储方案的结果，用于构建单行数据
        temp_results = {'User Question': user_question}
        for product_name in product_names:
            product_doc = get_terms(work_path+'/knowledge_base/raw_data/insurance_knowledge/' + product_name+'.txt')
            plan_explain = PlanDescription(user_question=user_question, product_doc=product_doc)
            result = asyncio.run(plan_explain.achat_auto_llm(type="gpt"))
            # 假设product_name 包含方案的唯一标识（方案一、方案二）
            # 提取方案名称作为字典的键
            plan_key = product_name.split('/')[-1].split('.')[0]
            temp_results[plan_key] = result.replace('\n\n', '\n')
        # 将问题和对应的方案结果添加到结果列表中
        results_list.append(temp_results)

    # 将列表转换为 pandas DataFrame
    df_results = pd.DataFrame(results_list)
    from datetime import datetime
    now = datetime.now()
    time_str = now.strftime("%Y-%m-%d-%H-%M")
    # df_results.to_csv('华贵麦兜兜少儿重大疾病保险.csv', index=False)
    df_results.to_csv(work_path+'/train_data/'+time_str+product_name.split('/')[0]+'.csv', index=False, encoding='utf-8-sig')


    # for user_question in ['理赔规则','医疗保险金','等待期']:
    #     print('\n\n =========================== ',user_question,'=========================\n\n')
    #     for product_name in ['华贵麦兜兜少儿重大疾病保险/华贵麦兜兜少儿重大疾病保险（互联网专属）-方案一.txt','华贵麦兜兜少儿重大疾病保险/华贵麦兜兜少儿重大疾病保险（互联网专属）-方案二.txt']:
    #         product_doc = '/Users/qichen/git-lingxi/LLM_internal/internal_server/knowledge_base/raw_data/insurance_knowledge/'+product_name
    #         plan_explain = PlanDescription(user_question=user_question,
    #                                        product_doc=product_doc)
    #         result = asyncio.run(plan_explain.achat_auto_llm(type="gpt"))
    #         print("\n",product_name,"\n")
    #         print("\n\n======结果=======\n\n",result.replace('\n\n', '\n'))



